Skip to content

Latest commit

 

History

History
60 lines (48 loc) · 1.79 KB

File metadata and controls

60 lines (48 loc) · 1.79 KB

792. Number of Matching Subsequences

Given a string s and an array of strings words, return the number ofwords[i]that is a subsequence ofs.

A subsequence of a string is a new string generated from the original string with some characters (can be none) deleted without changing the relative order of the remaining characters.

  • For example, "ace" is a subsequence of "abcde".

Example 1:

Input: s = "abcde", words = ["a","bb","acd","ace"] Output: 3 Explanation: There are three strings in words that are a subsequence of s: "a", "acd", "ace". 

Example 2:

Input: s = "dsahjpjauf", words = ["ahjpjau","ja","ahbwzgqnuk","tnmlanowax"] Output: 2 

Constraints:

  • 1 <= s.length <= 5 * 104
  • 1 <= words.length <= 5000
  • 1 <= words[i].length <= 50
  • s and words[i] consist of only lowercase English letters.

Solutions (Rust)

1. Solution

implSolution{pubfnnum_matching_subseq(s:String,words:Vec<String>) -> i32{letmut indices = vec![vec![];26];letmut ret = 0;for(i, c)in s.bytes().enumerate(){ indices[(c - b'a')asusize].push(i);}for word in&words {letmut i = 0;letmut flag = true;for c in word.bytes(){match indices[(c - b'a')asusize].binary_search(&i){Err(j)if j == indices[(c - b'a')asusize].len() => { flag = false;break;}Ok(j) | Err(j) => i = indices[(c - b'a')asusize][j] + 1,}} ret += flag asi32;} ret }}
close